home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Current Shareware 1996 January
/
Current Shareware Volume 5 (January 1996).ISO
/
heretic
/
dm2cnv31.zip
/
DM2CONV.DOC
< prev
next >
Wrap
Text File
|
1995-07-22
|
29KB
|
738 lines
=======================
DM2CONV v3.1
by Vincenzo Alcamo
16 July 1995
=======================
** DESCRIPTION
--------------
This program converts DOOM/ULTIMATE DOOM/DOOM2/HERETIC levels to run with
one of the other games: a total of eleven different conversion types.
Some of DM2CONV's features are:
- DOOM, ULTIMATE DOOM, DOOM II, HERETIC support
- level conversion and remapping
- music conversion, remapping and mixing
- linedef/sector types remapping
- wall/floor textures remapping
- resource renaming
- object substitution with difficulty level & conditional substitution
- fully programmable via response files
- GFXMAKER utility to use one game's textures inside another one
Paragraphs starting with ** are new or modified since the last version.
** WHY I MUST CONVERT A PWAD?
-----------------------------
Levels designed for DOOM are incompatible with DOOM II or HERETIC
because some resources (ie: graphic bitmap) and objects only exist
inside the DOOM main wad file: DOOM.WAD.
Nevertheless, if you have played DOOM II or HERETIC you should have seen
new monsters and things (the SuperShotgun, the Ethereal Crossbow...).
DM2CONV handles the conversion process in a very easy way.
Let's introduce some conventional names:
D = DOOM
UD = ULTIMATE DOOM
D2 = DOOM II
H = HERETIC
If you want to convert from game1 to game2 you should type:
DM2CONV source destination @:(game1)TO(game2)
Let suppose you want to run SNIPER.WAD (a level by Eric C. Reuter) with
DOOM II; just execute the following command:
DM2CONV SNIPER.WAD SNIPER2.WAD @:DTOD2
For HERETIC you have to execute:
DM2CONV SNIPER.WAD SNIPERH.WAD @:DTOH
NOTE: DM2CONV requires the DEFAULT.RSP file, place it in the same
directory where DM2CONV.EXE resides.
The TO is optional, so @:D2TOD is equal to @:D2D .
Please, read carefully the KNOWN PROBLEMS paragraph.
== HOW THE CONVERSION WORKS
---------------------------
The differences between DOOM / DOOM II / HERETIC are the following:
- many resources have different names
- most wall/floor textures are different
- new things or missing things
- incompatible linedef/sector types
DM2CONV renames the resource to their appropriate names, remaps the
textures to similar ones, changes the objects, etc...
The general syntax is:
DM2CONV <input> [output] [/symbol[=[value]]]... <@response>...
input
This parameter is required: it specifies the name of the wad to
convert. The .WAD extension is optional.
The input file must be a PWAD or a IWAD file.
output
This is the name of the output wad. The .WAD extension is optional.
If a file of the same name already exists, it is deleted.
If this parameter is omitted, the input file is overwritten (you
should make a backup copy of the source file).
/symbol[=[value]]
You can define or undefine a symbol.
/name The symbol 'name' is defined with the 'name' value
/name=value The symbol 'name' is defined with the value 'value'
/name= The symbol 'name' is undefined.
@response
response is the name of a text file containing additional parameters
for DM2CONV. The .RSP extension is optional.
If the response file is not found in the specified directory, it will
be searched in the same directory where DM2CONV.EXE resides.
== RESPONSE FILES
-----------------
If you have read the above paragraphs, you may think that DM2CONV is
rather simple. You may also think that simple programs can do only
simple things: THIS IS COMPLETELY WRONG.
DM2CONV has a simple syntax because it is an interpreter:
all conversion logic is contained inside response files.
I have supplied a basic response file, DEFAULT.RSP, that handles all the
conversion process. If you want to customize the conversion, you should
edit the DEFAULT.RSP file, or create a new one.
Response files are a sort of batch files, a set of commands have been
provided to handle response files.
@[response][:label]
This command calls the specified response file (like DOS CALL).
If a label is supplied, the execution of the response file
will start at the specified label: a label is defined with a
colon, like in DOS batch files.
If the response name is omitted, the current response file is
used or, if in command-line mode, the DEFAULT.RSP is used.
The maximum number of nested response files is 10.
Examples:
@TEST ;call the TEST.RSP file
@TEST:NO1 ;call the TEST.RSP file at line :NO1
@:SUB2 ;call the current response file at line :SUB2
:label
This command defines a label inside a response file.
;comment
All text in a line after the semicolon is a comment and is discarded.
RETURN
This command terminates the current response file and returns
control to the calling response file.
ABORT
This command terminates the program, control returns to DOS.
ECHO text
This command displays the specified text.
IFDEF symbol
IFNDEF symbol
ELSE
ENDIF
These commands implement conditional parsing of response files.
If a symbol is defined (IFDEF) or undefined (IFNDEF) parsing
will continue on the True branch or in the False (ELSE) branch.
IFDEF/IFNDEF can be nested. There is no limit for nesting level.
Example:
IFDEF TEST
ECHO TEST is defined
@TRUE ;do something
ELSE
ECHO TEST is not defined
ENDIF
SET symbol[=[value]] ...
This command defines or undefines a specified symbol.
It is equivalent to the /symbol command, but it is for response files.
Use SET alone to display the symbols currently defined.
Examples:
SET TEST=2 PIC=GIF ;defines TEST and PIC
SET GFX= ;undefines GFX
SET ;display all symbols
** SYMBOLS
----------
Symbols are a new features of DM2CONV and are used primarily for
conditional parsing (IFDEF/IFNDEF).
Symbols can be defined with the SET or / commands (see the general
syntax). Any symbol can be redefined or undefined.
There are two types of symbols: environmental and private.
Private symbols are those defined using DM2CONV, environmental symbols
are the environment variables of the DOS shell.
An environmental symbol cannot be redefined or undefined, but a private
symbol of the same name has the precedence over it.
The SET command will display only the private symbols.
Although you can use any name for a symbol, there are some symbols
that performs special functions:
SOURCE
This symbol contains the name of the source file, as specified in
the command line of DM2CONV.
Can be (re)defined in a response file.
DEST
This symbol contains the name of the destination file, as specified
in the command line of DM2CONV.
Can be (re)defined in a response file.
HELP
This symbol, if set, will skip the conversion process, and displays
the help page of DM2CONV.
It is the same as to type DM2CONV with no parameters.
FROM
This symbol specify the format of the source file.
Valid values are:
D or DOOM for DOOM/ULTIMATE DOOM wads
D2 or DOOM2 for DOOM II wads
H or HERETIC for HERETIC wads
Currently this symbol has no use since no checking is performed
on the source file format.
Default value is DOOM.
TO
This symbol specify the format of the destination file.
Values are the same for the FROM symbol.
Default value is DOOM2.
This symbol is needed to change the names for levels and musics.
REMAP
This symbol enables the level remapping feature.
Just define it with the number of the first level, and all
levels in a wad are remapped.
Examples:
/REMAP=5 ;start from E1M5 or MAP05
/REMAP=10 ;start from E2M1 or MAP10
/REMAP=28 ;start from E4M1 or MAP28
Musics are remapped automatically: if E1M1 is mapped to E2M1, then
D_E1M1 is mapped to D_E2M1.
DEBUG
This symbol, if set, will enable the debug mode.
In debug mode, detailed information are shown: currently only
statistics about the object conversion are displayed.
Be warned: debug mode could generate a large amount of text.
MIX
This symbol enable the music mix feature.
If it is defined, all musics in a wad are mixed (randomized).
You can have a wad with several musics and mix them before running
DOOM to play musics in a random order.
SEED
This symbol pertains to the object substitution algorithm.
It defines the value for the random number generator's seed.
Default is 0.
Each level is randomized with the specified seed.
ONCE
This symbol pertains to the object substitution algorithm.
The value of the symbol specify the objects suitable for conversion:
0 all objects can be converted
1 only objects not already converted
2 only objects already converted
others same as 1
/ONCE means /ONCE=ONCE, so the default value of 1 is used.
Example:
/ONCE= ;with ONCE undefined (or ONCE=0)
8=3 ; objects type 8 becomes type 3
3=4 ; all objects type 3 becomes type 4 -> no type 3 remains
/ONCE ;with ONCE defined (ONCE=1)
8=3 ; objects type 8 becomes type 3
3=4 ; objects type 3 (not the former type 8) becomes type 4
GFX
This symbol is used by DEFAULT.RSP: it specify to not convert
textures and floors names.
You must define this symbol if you use the wad built by GFXMAKER.
See GFXMAKER for more details.
HANGS
This symbol is used by DEFAULT.RSP: it specify to convert hanging
objects (valid only for HERETIC to DOOM/DOOM2 conversions).
In HERETIC, players can walk under hanging objects, but not in
DOOM/DOOM2.
ULTIMATE
This symbol is defined by DEFAULT.RSP if ULTIMATE DOOM is the source
or destination game.
If you have the registered version of DOOM, you can upgrade it to
ULTIMATE DOOM with the patch that can be found on many ftp sites.
If you set the environment variable ULTIMATE, all DOOM conversions
are treated as ULTIMATE DOOM conversions.
Example:
SET ULTIMATE=YES
DM2CONV test @:D2TOD ;performs a DOOM2 to ULTIMATE DOOM conv.
is the same as:
DM2CONV test /ULTIMATE @:D2TOD
DM2CONV
The environmental symbol DM2CONV, if defined, is parsed before the
command-line arguments and may contain default options.
Example:
SET DM2CONV=/ULTIMATE /REMAP /GFX
DM2CONV test @:D2TOD
is the same as:
DM2CONV /ULTIMATE /REMAP /GFX test @:D2TOD
== REPLACEMENTS
---------------
To convert a level several things must be replaced: texture names,
floor names, directory entry names, objects types, linedef and sector
actions.
All of these replacements can be specified in a response file.
A replacement expression must not contain spaces, thus more than
one expression is allowed on the same line.
A section tag specifies the type of replace expression.
Valid section tags are:
[TEXTURES] ;texture name replaces
[FLOORS] ;floor name replaces
[NAMES] ;directory entry names replaces
[THINGS] ;object replacement expressions
[LINEDEFS] ;linedef replacement expressions
[SECTORS] ;sector replacement expressions
[OBJECTS] ;object names (see OBJECTS.RSP)
Only the first 3 characters of a section name are used.
[TEXTURE] [FLOORS] and [NAMES] expressions
oldname=newname
[LINEDEFS] and [SECTORS] expressions
action1,action2,...=newaction
action1-action2,...=newaction
[OBJECTS] expressions
number=[(radius,height)]game,name
Game is a combination of game ids: D for DOOM, D2 for DOOM II
and H for HERETIC.
Radius and height are optional and are currently unused.
Example: 2001=DD2,Shotgun
82=(20,32)D2,Super Shotgun
NOTE: spaces are allowed after the equal sign, only one object
per line can be defined.
[THINGS] expressions are discussed in the following paragraph.
== OBJECT SUBSTITUTIONS
-----------------------
All things in DOOM are objects: lamps, monsters, weapons, power-ups,
obstacles, other players, etc..
DOOM II supports all DOOM objects plus others: the super shotgun, the
megasphere, many new monsters, etc..
HERETIC hasn't any of the DOOM objects.
With DM2CONV you can transform specified DOOM objects into DOOM II or
HERETIC objects. The object substitution is such a process and is
enabled by specifying at least one replacement expression.
A replacement is a string describing what objects to transform and how
to transform them. The simplest replacement string is of the format:
object1=object2
This replacement will transform each object of the type object1 to one
of the type object2.
An object is specified by its number or its name.
Spaces in name aren't allowed: you must discard them; also, you can
specify only the first characters of the name.
Example: SUPER SHOTGUN must be entered as SUPERSHOTGUN or as SUPER
WARNING: if you want to specify objects by name, you must first include
the OBJECTS.RSP file.
Example: DM2CONV in out @OBJECTS SHOTGUN=SUPERSHOTGUN @:DTOD2
You can change multiple objects:
obj1,obj2=obj3
all objects of type obj1 and obj2 are transformed into obj3 objects.
obj1=obj2,obj3
all obj1 objects becomes obj2 and obj3 (they are chosen randomly in
equal proportions: this is why the /SEED parameter exists).
obj1-obj2=obj3
all objects with types in range obj1 to obj2 becomes types obj3.
You can specify any number of source objects and any number of
destination objects.
You can also specify quantities (only for the destination objects):
IMP=DEMON@5
In the above example, only 5 IMPs become DEMONs; the others remain IMPs.
IMP=DEMON@5,SPECTRE@10
Five IMPs become DEMONs and ten become SPECTREs.
If the number of source objects is less than the destination, the
quantities are adjusted proportionally.
In the above example if there are only 9 IMPS, 3 become DEMONs (33%)
and 6 become SPECTREs (66%).
Another example:
IMP=DEMON@5,SPECTRE
5 IMPs become DEMONs, the remaining become SPECTRE: if there are less
than 5 IMPs, all of them become DEMONs.
That is, if you don't specify a quantity the remaining objects are used.
The quantity can be a percentual:
IMP=DEMONS@50%
In this way, 50% of IMPs become DEMONs.
You can mix all of the above rules:
IMP,DEMON=BARON@2,LOSTSOUL@50%,TROOPER
In DOOM/DOOM II/HERETIC the difficulty level chosen when you start a new
game will affect the objects in a considerable manner:
- new objects may appear
- other objects disappear
The reason is that each object has flags that specify in which level of
difficulty it should appear.
There are five flags:
1 - object appears on difficulty levels 1 and 2
2 - object appears on difficulty level 3
3 - object appears on difficulty levels 4 and 5
D - object is deaf (useful only for monsters)
M - object appears ONLY in multiplayer mode
Starting from version 1.5, DM2CONV supports these flags in the
substitution rules; the complete syntax is:
sobj1[:flags]...=dobj1[@quantity[%]][:flags]...
Additional flags are introduced by DM2CONV v3.0:
0 - object does not appear at all (if 123 flags are not specified)
This is useful to remove an object from a level.
A - process all objects
O - process only objects not already converted
C - process only objects already converted
The AOC flags overrides the ONCE symbol.
Each object can have one or more of the above flags.
If difficulty flags are specified in the source, only the objects
that have those flags are changed.
IMP:1=STIMPACK
means that all IMP that will appear (at least) in difficulty level 1
will be transformed into STIMPACK.
This affects all IMP that have the '1' flag, not the ones that
have only the '1' flag.
If difficulty flags are specified in the destination, the object
remapped will have the specified flags.
IMP=STIMPACK:123
means that all IMP will be transformed into STIMPACK and will appear
on any level (except multiplayer mode).
The 'D' flag has no means if used in a source object.
The 'M' flag works in different ways if used in source or destination
source: only multiplayer-mode objects are changed
destination: the object appear only on multiplayer mode
** SPECIAL SUBSTITUTIONS
------------------------
DM2CONV v3.1 has two special object types: 0 and 9999.
Object number 0 (named REMOVE inside OBJECTS.TXT) is used to remove an
object from the level.
Example:
baron=REMOVE
This will eliminate all Baron of Hell.
You can then reference a removed object with the 0 code; example:
0=supershotgun@1
Object number 9999 (named MIX inside OBJECTS.TXT) is used to scramble
the position of the specified source objects.
Example:
imp,trooper,demon=MIX
In this way, imps, troopers and demons will switch their position:
this may be useful to randomize objects's position.
A new syntax has been added: if a destination object is preceeded by a
plus sign '+' it will be added over the source object instead of
replace the source object.
Example:
deathmatchstart=+shotgun
A shotgun is placed over each deathmatch starting point.
WARNING:
For this feature to work, there must be enough removed objects (via the
REMOVE object id, described above) to be used as new objects.
== CONDITIONAL OBJECT SUBSTITIONS
---------------------------------
With DM2CONV v3.0 you can specify to perform an object substitution if
and only if a specified condition is true.
Three new object expressions are available:
?objectlist relational_operator value
?ELSE
?END
I will explain these with examples:
?3003>10 ;if there are more than ten baron of hell(=3003)
3003=69@50% ;converts 50% of baron into hellknight
?ELSE
3003=64@1 ;else converts 1 baron into an archvile
?ENDIF
Another example:
?82=0 2001=82@1 ?ENDIF
If there is no supershotgun, a shotgun is converted into a supershotgun.
In details:
objectlist is a list of objects, like any object expression.
obj1,obj2,...
obj1:flags,obj2-obj3:flags,...
relational_operator is one of the following:
= <> > >= < <=
value is an integer in the range 0-16383.
DM2CONV will count the number of objects specified in the object list.
If this number is in relation with the value specified, the expressions
in the true branch are executed, otherwise the other branch is executed
(the one between ?ELSE and ?END, this is optional).
This works like the IFDEF/IFNDEF commands.
The ?ELSE command is optional, but the ?END command is mandatory.
Conditional expressions can be nested.
The primary use of conditional substitutions is to ensure a specific
amount of an object; example:
?BFG>2 ;this is only an example
BFG=BFG@2,CELLPACK
?ELSE
?BFG<2
BFG,PLASMA,CELLPACK,CELLCHARGE=BFG@2
?END
?END
== TEXTURE REPLACEMENTS
-----------------------
The texture replacement lists were the hardest part to write.
When choosing a texture replacement you must follow these rules:
1- the two textures must have the same height, alternatively
the second must be 128 pixels high.
This is because textures are repeated vertically every 128 pixels
(otherwise you have the TUTTIFRUTTI effect).
2- if the source texture has only one patch, the second must have
only one patch.
This is because fake walls can have only this type of texture
(otherwise you have the MEDUSA effect).
I recommend you to use EDMAP: this awesome editor has a powerful viewer
that shows textures/patches/floors/sprites. Texture info are also shown.
== GFXMAKER
-----------
GFXMAKER can create a wad file that contains all the textures of a
specified set of games.
For example: you can create a wad that contains DOOM II and HERETIC
textures for DOOM.
You will need the registered version of the selected games.
Please, execute GFXMAKER and follow its instructions.
The wad built by GFXMAKER has a name defined by the set of games used.
A wad for one game (DOOM's GFXD_H.WAD for example) cannot be used with
another game (DOOM II or HERETIC).
If you use the GFX* wad, you can convert levels mantaining the original
textures/floors by specify the /GFX parameter.
For example:
DM2CONV SNIPER SNIPERH /GFX @:DTOH
HERETIC -FILE GFXH_D.WAD SNIPERH.WAD
SPECIAL CONSIDERATION ABOUT GFXMAKER:
- DOOM and DOOM II have the same color palette, but not HERETIC.
If you specify HERETIC as source/destination to GFXMAKER, the
colors of patches/floors need to be converted.
Most of the time there is no exact match, so another similar colour
must be used. This is why the textures look different.
- I have noticed that HERETIC will hang the computer if the external
files have too many resources. (HERETIC has lot of bugs)
This happen if you use (for example) GFXH_D.WAD and all the three
episodes of DOOM.
I recommend you to use only one level at a time with GFXH_D.WAD
- For the above reason, I have not implemented the DOOM II textures
for HERETIC.
However, you can specify the /GFX parameter if you use GFXH_D.WAD:
DOOM textures are mantained, only DOOM II textures are converted.
- The effect that shows when a switch or button is pressed, is
implemented inside the executable, so buttons will not change when
you press them, although they will work as usual.
** DMT
------
DMT is no longer distributed with DM2CONV.
You can find it inside previous releases of DM2CONV (from v1.2 to v3.0),
otherwise ask me a copy by email.
** KNOWN PROBLEMS
-----------------
Multi-level pwads can create problems with DOOM II because the level
sequence cannot be replicated: DOOM has 3 episodes, each with 8 levels
and 1 secret level, while DOOM II has 30 levels, 1 secret level and 1
super-secret level.
This means that accessing the secret level in a wad will load the
31th level of DOOM II instead of the ExM9 level of DOOM.
For the same reason, DOOM II level converted for HERETIC must consist
of less than nine maps. HERETIC has the same level scheme of DOOM.
Monster substituition has a weak spot. When you change monsters with
bigger ones, if these new monsters are too near a wall they cannot move
because they collide with the scenario. It is the same as you type
IDSPISPOPD (or IDCLIP for DOOM II, KITTY for HERETIC), then move into a
wall and retype the code.
Levels converted to HERETIC v1.0 may have the FOS bug (FLASH OF SKY):
when you stand over a linedef you will see the sky.
This is due to some limitation of the HERETIC graphic engine, it is
not a DM2CONV's bug: version 1.2 of HERETIC has this bug fixed.
HERETIC has another strange bug: it does not support more than 1 maces in
a level. If a level has more than 8 maces it exits to DOS with the error:
Too many mace spots
But if a level has 8 or less maces, all the maces (except one) are
converted into monsters: this conversion is made on-the-fly by HERETIC.
For this reason, DEFAULT.RSP has an instruction to limit the number of
maces in a level: if more than 1 mace is found, all but 1 are converted
into phoenix rods and hellstaffs.
I think that ULTIMATE DOOM is a modified version of DOOM that supports
all DOOM II linedefs. There is no DOOM to ULTIMATE DOOM conversion,
since all DOOM wads are compatible with ULTIMATE DOOM.
Due to the many differences of these four great games, the only
conversions ensured at 100% are those from DOOM to DOOM2/HERETIC, and
from DOOM2 to ULTIMATE DOOM.
All the other conversions may produce unplayable levels.
Some of the most common problems:
- objects are of different sizes, so a converted object may block
a passage, or it may not block a passage it was meant to block.
example: HERETIC level E1M1 to DOOM2, secret room near the start
- many linedefs are not supported by all games: fast doors, raising
stairs by 16 pixels, etc...
example: HERETIC level E1M1 to DOOM, raising stairs near the exit
- monster conversion: some levels rely on the destruction of a
specific monster (BOSS BRAIN, COMMANDER KEEN, etc..) to open the
exit. This feature could not work once the level is converted, so
it will be impossible to exit.
Most of these problems can be skipped with the use of cheat codes:
that works only in single player mode! DEATHMATCHERS are warned!
** DISTRIBUTION LICENSE
-----------------------
All files in the original distribution package are PUBLIC DOMAIN.
You can freely distribute these files (also separately) in any form.
The files included inside DM2CNV31.ZIP are:
DM2CONV.EXE the converter!
DM2CONV.PAS source for DM2CONV
DM2CONV.DOC documentation
GFXMAKER.EXE the wad builder
GFXMAKER.PAS source for GFXMAKER
DEFAULT.RSP the official default response file
OBJECTS.RSP response to use names in object expressions
OBJECTS.TXT object table for DOOM/DOOM2/HERETIC
FILE_ID.DIZ package description
For comments, bug reports, suggestions, etc.. please contact the author:
snail-mail:
Vincenzo Alcamo
via Verdi 185
40059 Medicina (BO)
ITALY
e-mail:
alcamo@arci01.bo.cnr.it
(I am always glad to receive E-mails, but I can use this account
only on Tuesdays and Saturdays: don't expect fast replies)
You can ask me by e-mail the latest version of DM2CONV; please specify
the following information:
- the version of DM2CONV you are using
- the type of version you want: the full package or the lite one.
the lite version has no sources (60K uuencoded rar file).
By default I will send you the uuencoded lite version (it's smaller!)
== ADDITIONAL CREDITS
---------------------
Matt Fell author of the DOOM specs - vital info
Raphael Quinet,Brendon J Wyber authors of DEU - first DOOM editor
Jeff Rabenhorst author of EDMAP - awesome DOOM editor
Greg Lewis author of DEHACKED
v3.0 beta testers: Jack Hartman, Bradford Youngkin, Glenn Willing
** PROGRAM HISTORY
------------------
07/22/95 v3.1 ULTIMATE DOOM support.
New object types: 0 (to remove), 9999 (to mix)
New object syntax to add an object over another one.
DM2CONV symbol for default options.
Bug fix: random seed report (SEED=0 even if seed<>0)
Bug fix: label parsing with drives (ex. C:\T.RSP:OK)
DMT is no longer distributed with DM2CONV.
05/23/95 v3.0 Totally rewritten version: syntax has changed.
New conversions: HERETIC to DOOM/DOOM2, DOOM2 to DOOM.
Conversion driven by response files: no tables are
included in the executable program.
Conditional parsing, conditional object expressions.
Symbols instead of switches.
New ONCE feature: replace objects once.
New MIX feature to scramble music order.
DM2MKWAD obsolete: GFXMAKER now supports DOOM/DOOMII/HERETIC.
Many other enhancements: find them by yourself.
Special thanks to Bradford Youngkin: HERETIC's mace bug
and problems with hanging objects.
04/01/95 v2.0 Registered HERETIC support (shareware is no longer supported)
DOOM textures and floors inside HERETIC.
DOOM II to HERETIC conversion.
Many little improvements: IWAD support, no RSP extension
needed in response files, nested response files,
/NOTEXTURE and /NOFLOOR switch.
03/04/95 v1.7b Special bug fix version:
- texture names were case sensitive
(reported by Thomas Beckmann)
- strange substitutions with multi-level pwads
(reported by Rick Weber,Jack Hartman,Georg Deppe)
01/21/95 v1.6b Resource renaming.
Improved documentation.
01/14/95 v1.5b Sky resource remapping.
Heretic support.
External texture tables.
Difficulty level supported.
Some code rewritten.
12/14/94 v1.2 Music remapping. Other minor changes.
Sources released in the public domain.
DMT tool distributed to check reactions.
11/12/94 v1.0 The first release.
DM2CONV.PAS should be in the distribution package:
it wasn't for my fault.